Computing tools, such as computers, tablets, mobile devices, and cloud services, are widely used to create artworks including images, videos, and multimedia, for desirable experiences by users. Artworks many include many components such as raster images and vector images. Raster images, also referred to as bitmap, are represented by an array of pixels within a grid of pixels. Vector images are represented by straight and/or curved path, such as lines, shapes, and other graphic components, formatted by geometric formulas. Depending on the artwork, it may be advantageous to include raster images, vector images, or a combination of both.
Colorization of vector graphic artworks is a non-trivial task, and even a simple figure may contain hundreds of paths. Typically, a user must select and colorize an individual path based on hue, saturation, tone and contrast. The user must also keep in mind the colors already assigned as well as the desired result. In order to achieve desired balance and harmony in the colorized results, multiple iterations may be involved where different colors are assigned to each path in multiple steps. This task is time-consuming and requires a lot of attention to detail.
Some challenges of colorization may be addressed using convolutional neural networks. These techniques sidestep the traditional graphics rendering pipeline and, instead, generate imagery at the pixel level by learning from large collections of photos (e.g., faces or bedrooms). However, many of these techniques are of limited practical use since these techniques are trained based on images belonging to a single class (for example, shoes and faces). Even those techniques that work for multiple classes require a grayscale version as input. Thus, existing techniques do not perform well with colorizing images in the wild, i.e. a broad scope of image categories.